#ifndef SYSTEMCHECK_H
#define SYSTEMCHECK_H
#include <QGuiApplication>
#include <QQmlApplicationEngine>


class SystemCheck
{
private:
    struct ResolutionInfo//分辨率信息
    {
        QString ResolutionSize = "";//分辨率大小
        int RefreshRate = 0;//对应的刷新率
    };

    struct MonitorRInfo//显示器信息
    {
        int MonitorID = 0;//分辨率对应的显示器ID
        QString ResolutionRatio = "";//当前分辨率
        QString MonitorName = "";//显示器对应的名称(或许能获取？)
        QVector<ResolutionInfo> AllResInfo;//当前显示器对应的所有支持的分辨率信息
    };

    struct GCardInfo//显卡信息
    {
        int GCardID = 0;//检测到的第几个显卡
        QString GCardName = "";//显卡名称
        int DedicatedSystemMemory = 0;//系统视频内存(M)
        int DedicatedVideoMemory = 0;//专用视频内存(M)
        int SharedSystemMemory = 0;//共享系统内存(M)
        int DeviceId = 0;//设备ID
        int Revision = 0;//PCI ID修正版本
        int SubSysId = 0;//子系统PCI ID
        int VendorId = 0;//厂商编号
        int OutputNum = 0;//接了几个输出的显示器
        QVector<MonitorRInfo> AllMonitorInfo;//所有连接的显示器信息
    };

    struct SysInfo//系统信息
    {
        QString SysName = "";//系统名字(win7，win10这些)
        int SysBit = 32;
        int MemoryTotalSize = 0;//内存总大小
        int MemoryAvailableSize = 0;//内存可用大小
        QString cpu_Info = "";//CPU信息
        //QString TestLogInfo = "";//测试用日志输出信息
        int GCardNum = 0;//显卡数量
        QVector<GCardInfo> AllGCardInfo;//所有检测到的显卡信息，数量跟显卡数量应当对应(可能会检测出奇怪的显卡，不知道是核显还是集显还是什么鬼东西)
        QString VCVer="";
        QString NetVer="";
        QString GCardDriverVer="";
    };

public:
    SystemCheck();
    static SysInfo SInfo;//获取保存系统信息的变量
    static bool CheckCPU();
    static bool CheckGPU();
    static bool CheckGPUDriver();
    static bool CheckSystem();
    static bool CheckMemory();
    static bool CheckNet();
    static bool CheckVC();
    static bool CheckNetwork();
    static bool CheckDisk();

};

#endif // SYSTEMCHECK_H
